package br.com.gemepde.dao.impl;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.gemepde.dao.ArquivoDao;
import br.com.gemepde.database.HibernateUtil;
import br.com.gemepde.domain.Arquivo;

public class ArquivoDaoHibernate implements ArquivoDao{

	public void salvar(Arquivo arquivo) {
		Session sessao = null;
		Transaction transacao = null;
		
		try {
			sessao = HibernateUtil.getSessionfactory().openSession();
			transacao = sessao.beginTransaction();
			sessao.save(arquivo);
			transacao.commit();
		} catch (HibernateException e) {
			System.out.println("Não foi possível inserir arquivo. Mensagem: " + e.getMessage());
		} finally {
			try {
				sessao.close();
			} catch (Throwable e2) {
				System.out.println("Erro ao fechar operação de inserção. Mensagem: " + e2.getMessage());
			}
		}
	}

	public void atualizar(Arquivo arquivo) {
		Session sessao = null;
		Transaction transacao = null;
		
		try {
			sessao = HibernateUtil.getSessionfactory().openSession();
			transacao = sessao.beginTransaction();
			sessao.update(arquivo);
			transacao.commit();
		} catch (HibernateException e) {
			System.out.println("Não foi possível atualizar arquivo. Mensagem: " + e.getMessage());
		} finally {
			try {
				sessao.close();
			} catch (Throwable e2) {
				System.out.println("Erro ao fechar operação de atualização. Mensagem: " + e2.getMessage());
			}
		}
	}

	public void excluir(Arquivo arquivo) {
		Session sessao = null;
		Transaction transacao = null;
		
		try {
			sessao = HibernateUtil.getSessionfactory().openSession();
			transacao = sessao.beginTransaction();
			sessao.delete(arquivo);
			transacao.commit();
		} catch (HibernateException e) {
			System.out.println("Não foi possível excluir arquivo. Mensagem: " + e.getMessage());
		} finally {
			try {
				sessao.close();
			} catch (Throwable e2) {
				System.out.println("Erro ao fechar operação de exclusão. Mensagem: " + e2.getMessage());
			}
		}
	}

}
